<!DOCTYPE html>
<html lang="en">
  <head>
    <title>Assemblies  Reference</title>
    <link rel="stylesheet" type="text/css" href="css/jazzy.css" />
    <link rel="stylesheet" type="text/css" href="css/highlight.css" />
    <meta charset="utf-8">
    <script src="js/jquery.min.js" defer></script>
    <script src="js/jazzy.js" defer></script>
    
    <script src="js/lunr.min.js" defer></script>
    <script src="js/typeahead.jquery.js" defer></script>
    <script src="js/jazzy.search.js" defer></script>
  </head>
  <body>

    <a name="//apple_ref/swift/Section/Assemblies" class="dashAnchor"></a>

    <a title="Assemblies  Reference"></a>

    <header class="header">
      <p class="header-col header-col--primary">
        <a class="header-link" href="index.html">
          RouteComposer 2.9.0 Docs
        </a>
         (100% documented)
      </p>
    
      <div class="header-col--secondary">
        <form role="search" action="search.json">
          <input type="text" placeholder="Search documentation" data-typeahead>
        </form>
      </div>
    
    
    </header>

    <p class="breadcrumbs">
      <a class="breadcrumb" href="index.html">RouteComposer Reference</a>
      <img class="carat" src="img/carat.png" alt=""/>
      Assemblies  Reference
    </p>

    <div class="content-wrapper">
      <nav class="navigation">
        <ul class="nav-groups">
          <li class="nav-group-name">
            <a class="nav-group-name-link" href="Core%20Entities.html">Core Entities</a>
            <ul class="nav-group-tasks">
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Protocols/Router.html">Router</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Enums/RoutingError.html">RoutingError</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Enums/RoutingError/InitialControllerErrorState.html">– InitialControllerErrorState</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Enums/RoutingError/Context.html">– Context</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Structs/DestinationStep.html">DestinationStep</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Protocols/Finder.html">Finder</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Protocols/Factory.html">Factory</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Protocols/ContainerFactory.html">ContainerFactory</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Core%20Entities.html#/s:13RouteComposer6ActionP">Action</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Protocols/ContainerAction.html">ContainerAction</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Enums/RoutingResult.html">RoutingResult</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Classes/RouteComposerDefaults.html">RouteComposerDefaults</a>
              </li>
            </ul>
          </li>
          <li class="nav-group-name">
            <a class="nav-group-name-link" href="Tasks.html">Tasks</a>
            <ul class="nav-group-tasks">
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Protocols/RoutingInterceptor.html">RoutingInterceptor</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Protocols/ContextTask.html">ContextTask</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Protocols/PostRoutingTask.html">PostRoutingTask</a>
              </li>
            </ul>
          </li>
          <li class="nav-group-name">
            <a class="nav-group-name-link" href="Assemblies.html">Assemblies</a>
            <ul class="nav-group-tasks">
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Classes/StepAssembly.html">StepAssembly</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Classes/SwitchAssembly.html">SwitchAssembly</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Enums/ChainAssembly.html">ChainAssembly</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Classes/CompleteFactoryAssembly.html">CompleteFactoryAssembly</a>
              </li>
            </ul>
          </li>
          <li class="nav-group-name">
            <a class="nav-group-name-link" href="Additional%20Assemblies.html">Additional Assemblies</a>
            <ul class="nav-group-tasks">
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Classes/SingleStep.html">SingleStep</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Classes/SingleContainerStep.html">SingleContainerStep</a>
              </li>
            </ul>
          </li>
          <li class="nav-group-name">
            <a class="nav-group-name-link" href="Factories.html">Factories</a>
            <ul class="nav-group-tasks">
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Structs/ClassFactory.html">ClassFactory</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Structs/StoryboardFactory.html">StoryboardFactory</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Structs/FinderFactory.html">FinderFactory</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Structs/NavigationControllerFactory.html">NavigationControllerFactory</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Structs/TabBarControllerFactory.html">TabBarControllerFactory</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Structs/SplitControllerFactory.html">SplitControllerFactory</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Structs/NilFactory.html">NilFactory</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Structs/UIHostingControllerFactory.html">UIHostingControllerFactory</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Structs/UIHostingControllerWithContextFactory.html">UIHostingControllerWithContextFactory</a>
              </li>
            </ul>
          </li>
          <li class="nav-group-name">
            <a class="nav-group-name-link" href="Finders.html">Finders</a>
            <ul class="nav-group-tasks">
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Protocols/StackIteratingFinder.html">StackIteratingFinder</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Structs/ClassFinder.html">ClassFinder</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Structs/InstanceFinder.html">InstanceFinder</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Structs/NilFinder.html">NilFinder</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Structs/UIHostingControllerWithContextFinder.html">UIHostingControllerWithContextFinder</a>
              </li>
            </ul>
          </li>
          <li class="nav-group-name">
            <a class="nav-group-name-link" href="Steps.html">Steps</a>
            <ul class="nav-group-tasks">
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Enums/GeneralStep.html">GeneralStep</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Classes/NavigationControllerStep.html">NavigationControllerStep</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Classes/TabBarControllerStep.html">TabBarControllerStep</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Classes/SplitControllerStep.html">SplitControllerStep</a>
              </li>
            </ul>
          </li>
          <li class="nav-group-name">
            <a class="nav-group-name-link" href="UIViewController%27s%20protocols.html">UIViewController&#39;s protocols</a>
            <ul class="nav-group-tasks">
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Protocols/RoutingInterceptable.html">RoutingInterceptable</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Protocols/ContainerViewController.html">ContainerViewController</a>
              </li>
            </ul>
          </li>
          <li class="nav-group-name">
            <a class="nav-group-name-link" href="General%20Actions.html">General Actions</a>
            <ul class="nav-group-tasks">
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Enums/GeneralAction.html">GeneralAction</a>
              </li>
            </ul>
          </li>
          <li class="nav-group-name">
            <a class="nav-group-name-link" href="Logging.html">Logging</a>
            <ul class="nav-group-tasks">
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Protocols/Logger.html">Logger</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Enums/LogMessage.html">LogMessage</a>
              </li>
            </ul>
          </li>
          <li class="nav-group-name">
            <a class="nav-group-name-link" href="Extras.html">Extras</a>
            <ul class="nav-group-tasks">
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Structs/Destination.html">Destination</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Extras.html#/s:13RouteComposer14AnyDestinationa">AnyDestination</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Structs/InlineFactory.html">InlineFactory</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Structs/InlineStackIteratingFinder.html">InlineStackIteratingFinder</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Structs/InlineInterceptor.html">InlineInterceptor</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Structs/InlineContextTask.html">InlineContextTask</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Structs/InlinePostTask.html">InlinePostTask</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Structs/NavigationDelayingInterceptor.html">NavigationDelayingInterceptor</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Structs/NavigationDelayingInterceptor/Strategy.html">– Strategy</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Structs/SingleNavigationRouter.html">SingleNavigationRouter</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Structs/GlobalInterceptorRouter.html">GlobalInterceptorRouter</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Structs/PresentingFinder.html">PresentingFinder</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Structs/PresentingFinder/StartingPoint.html">– StartingPoint</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Structs/ContextSettingTask.html">ContextSettingTask</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Protocols/ContextAccepting.html">ContextAccepting</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Protocols/ContextAcceptingView.html">ContextAcceptingView</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Protocols/ContextInstantiatable.html">ContextInstantiatable</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Structs/ClassWithContextFinder.html">ClassWithContextFinder</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Protocols/ContextChecking.html">ContextChecking</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Structs/DismissalMethodProvidingContextTask.html">DismissalMethodProvidingContextTask</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Protocols/Dismissible.html">Dismissible</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Protocols/DismissibleWithRuntimeStorage.html">DismissibleWithRuntimeStorage</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Structs/DetailsNavigationFinder.html">DetailsNavigationFinder</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Extensions/CATransaction.html">CATransaction</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Extensions/DispatchQueue.html">DispatchQueue</a>
              </li>
            </ul>
          </li>
          <li class="nav-group-name">
            <a class="nav-group-name-link" href="Other%20Guides.html">Other Guides</a>
            <ul class="nav-group-tasks">
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="code_of_conduct.html">CODE_OF_CONDUCT</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="contributing.html">CONTRIBUTING</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="examples.html">EXAMPLES</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="readme.html">README</a>
              </li>
            </ul>
          </li>
          <li class="nav-group-name">
            <a class="nav-group-name-link" href="Other%20Classes.html">Other Classes</a>
            <ul class="nav-group-tasks">
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Classes/ActionToStepIntegrator.html">ActionToStepIntegrator</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Classes/CompleteFactoryChainAssembly.html">CompleteFactoryChainAssembly</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Classes/GenericStepAssembly.html">GenericStepAssembly</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Other%20Classes.html#/s:13RouteComposer27IntermediateDestinationStepC">IntermediateDestinationStep</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Classes/SingleNavigationLock.html">SingleNavigationLock</a>
              </li>
            </ul>
          </li>
          <li class="nav-group-name">
            <a class="nav-group-name-link" href="Other%20Enums.html">Other Enumerations</a>
            <ul class="nav-group-tasks">
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Enums/NavigationControllerActions.html">NavigationControllerActions</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Enums/NavigationControllerActions/PushAction.html">– PushAction</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Enums/NavigationControllerActions/PushAsRootAction.html">– PushAsRootAction</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Enums/NavigationControllerActions/PushReplacingLastAction.html">– PushReplacingLastAction</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Enums/SplitViewControllerActions.html">SplitViewControllerActions</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Enums/SplitViewControllerActions/SetAsMasterAction.html">– SetAsMasterAction</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Enums/SplitViewControllerActions/PushToDetailsAction.html">– PushToDetailsAction</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Enums/SplitViewControllerActions/PushOnToDetailsAction.html">– PushOnToDetailsAction</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Enums/TabBarControllerActions.html">TabBarControllerActions</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Enums/TabBarControllerActions/AddTabAction.html">– AddTabAction</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Enums/ViewControllerActions.html">ViewControllerActions</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Enums/ViewControllerActions/PresentModallyAction.html">– PresentModallyAction</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Enums/ViewControllerActions/ReplaceRootAction.html">– ReplaceRootAction</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Enums/ViewControllerActions/NilAction.html">– NilAction</a>
              </li>
            </ul>
          </li>
          <li class="nav-group-name">
            <a class="nav-group-name-link" href="Other%20Extensions.html">Other Extensions</a>
            <ul class="nav-group-tasks">
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Extensions/Array.html">Array</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Extensions/UIHostingController.html">UIHostingController</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Extensions/UINavigationController.html">UINavigationController</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Extensions/UISplitViewController.html">UISplitViewController</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Extensions/UITabBarController.html">UITabBarController</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Extensions/UIViewController.html">UIViewController</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Extensions/UIWindow.html">UIWindow</a>
              </li>
            </ul>
          </li>
          <li class="nav-group-name">
            <a class="nav-group-name-link" href="Other%20Protocols.html">Other Protocols</a>
            <ul class="nav-group-tasks">
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Protocols/AbstractAction.html">AbstractAction</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Protocols/AbstractFactory.html">AbstractFactory</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Protocols/ConcreteContainerAdapter.html">ConcreteContainerAdapter</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Protocols/ContainerAdapter.html">ContainerAdapter</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Protocols/ContainerAdapterLocator.html">ContainerAdapterLocator</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Protocols/CustomContainerViewController.html">CustomContainerViewController</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Protocols/InterceptableRouter.html">InterceptableRouter</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Other%20Protocols.html#/s:13RouteComposer9NilEntityP">NilEntity</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Protocols/SimpleContainerFactory.html">SimpleContainerFactory</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Protocols/StackIterator.html">StackIterator</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Protocols/StackPresentationHandler.html">StackPresentationHandler</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Protocols/WindowProvider.html">WindowProvider</a>
              </li>
            </ul>
          </li>
          <li class="nav-group-name">
            <a class="nav-group-name-link" href="Other%20Structs.html">Other Structures</a>
            <ul class="nav-group-tasks">
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Structs/ActionConnectingAssembly.html">ActionConnectingAssembly</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Structs/CATransactionWrappedAction.html">CATransactionWrappedAction</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Structs/CATransactionWrappedContainerAction.html">CATransactionWrappedContainerAction</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Structs/ChildCoordinator.html">ChildCoordinator</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Structs/CompleteFactory.html">CompleteFactory</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Structs/ContainerStepChainAssembly.html">ContainerStepChainAssembly</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Structs/CustomWindowProvider.html">CustomWindowProvider</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Structs/DefaultContainerAdapterLocator.html">DefaultContainerAdapterLocator</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Structs/DefaultLogger.html">DefaultLogger</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Structs/DefaultLogger/LogLevel.html">– LogLevel</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Structs/DefaultRouter.html">DefaultRouter</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Structs/DefaultStackIterator.html">DefaultStackIterator</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Structs/DefaultStackIterator/StartingPoint.html">– StartingPoint</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Structs/DefaultStackPresentationHandler.html">DefaultStackPresentationHandler</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Structs/DispatchQueueWrappedAction.html">DispatchQueueWrappedAction</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Structs/DispatchQueueWrappedContainerAction.html">DispatchQueueWrappedContainerAction</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Structs/KeyWindowProvider.html">KeyWindowProvider</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Structs/LastStepInChainAssembly.html">LastStepInChainAssembly</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Structs/NavigationControllerAdapter.html">NavigationControllerAdapter</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Structs/SearchOptions.html">SearchOptions</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Structs/SplitControllerAdapter.html">SplitControllerAdapter</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Structs/StepChainAssembly.html">StepChainAssembly</a>
              </li>
              <li class="nav-group-task">
                <a class="nav-group-task-link" href="Structs/TabBarControllerAdapter.html">TabBarControllerAdapter</a>
              </li>
            </ul>
          </li>
        </ul>
      </nav>
      <article class="main-content">

        <section class="section">
          <div class="section-content top-matter">
            <h1>Assemblies</h1>
            
          </div>
        </section>

        <section class="section">
          <div class="section-content">
            <div class="task-group">
              <ul class="item-container">
                <li class="item">
                  <div>
                    <code>
                    <a name="/s:13RouteComposer12StepAssemblyC"></a>
                    <a name="//apple_ref/swift/Class/StepAssembly" class="dashAnchor"></a>
                    <a class="token" href="#/s:13RouteComposer12StepAssemblyC">StepAssembly</a>
                    </code>
                  </div>
                  <div class="height-container">
                    <div class="pointer-container"></div>
                    <section class="section">
                      <div class="pointer"></div>
                      <div class="abstract">
                        <p>Builds a <code><a href="Structs/DestinationStep.html">DestinationStep</a></code> instance with the correct settings into a chain of steps.</p>
<h3 id='nb' class='heading'>NB</h3>

<p>Both <code><a href="Protocols/Finder.html">Finder</a></code> and <code><a href="Protocols/Factory.html">Factory</a></code> instances should deal with the same type of <code>UIViewController</code> and <code>Context</code> instances.</p>
<h3 id='usage' class='heading'>Usage</h3>
<pre class="highlight swift"><code><span class="k">let</span> <span class="nv">productScreen</span> <span class="o">=</span> <span class="kt">StepAssembly</span><span class="p">(</span><span class="nv">finder</span><span class="p">:</span> <span class="kt">ProductViewControllerFinder</span><span class="p">(),</span> <span class="nv">factory</span><span class="p">:</span> <span class="kt">ProductViewControllerFactory</span><span class="p">())</span>
        <span class="o">.</span><span class="nf">adding</span><span class="p">(</span><span class="kt">LoginInterceptor</span><span class="p">())</span>
        <span class="o">.</span><span class="nf">adding</span><span class="p">(</span><span class="kt">ProductViewControllerContextTask</span><span class="p">())</span>
        <span class="o">.</span><span class="nf">adding</span><span class="p">(</span><span class="kt">ProductViewControllerPostTask</span><span class="p">(</span><span class="nv">analyticsManager</span><span class="p">:</span> <span class="kt">AnalyticsManager</span><span class="o">.</span><span class="n">sharedInstance</span><span class="p">))</span>
        <span class="o">.</span><span class="nf">using</span><span class="p">(</span><span class="kt">UINavigationController</span><span class="o">.</span><span class="nf">push</span><span class="p">())</span>
        <span class="o">.</span><span class="nf">from</span><span class="p">(</span><span class="kt">NavigationControllerStep</span><span class="p">())</span>
        <span class="o">.</span><span class="nf">using</span><span class="p">(</span><span class="kt">GeneralAction</span><span class="o">.</span><span class="nf">presentModally</span><span class="p">())</span>
        <span class="o">.</span><span class="nf">from</span><span class="p">(</span><span class="kt">GeneralStep</span><span class="o">.</span><span class="nf">current</span><span class="p">())</span>
        <span class="o">.</span><span class="nf">assemble</span><span class="p">()</span>
</code></pre>

                        <a href="Classes/StepAssembly.html" class="slightly-smaller">See more</a>
                      </div>
                      <div class="declaration">
                        <h4>Declaration</h4>
                        <div class="language">
                          <p class="aside-title">Swift</p>
                          <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">final</span> <span class="kd">class</span> <span class="kt">StepAssembly</span><span class="o">&lt;</span><span class="kt">F</span><span class="p">:</span> <span class="kt"><a href="Protocols/Finder.html">Finder</a></span><span class="p">,</span> <span class="kt">FC</span><span class="p">:</span> <span class="kt"><a href="Protocols/AbstractFactory.html">AbstractFactory</a></span><span class="o">&gt;</span><span class="p">:</span> <span class="kt"><a href="Classes/GenericStepAssembly.html">GenericStepAssembly</a></span><span class="o">&lt;</span><span class="kt">F</span><span class="o">.</span><span class="kt">ViewController</span><span class="p">,</span> <span class="kt">FC</span><span class="o">.</span><span class="kt">Context</span><span class="o">&gt;</span>
    <span class="k">where</span>
    <span class="kt">F</span><span class="o">.</span><span class="kt">ViewController</span> <span class="o">==</span> <span class="kt">FC</span><span class="o">.</span><span class="kt">ViewController</span><span class="p">,</span> <span class="kt">F</span><span class="o">.</span><span class="kt">Context</span> <span class="o">==</span> <span class="kt">FC</span><span class="o">.</span><span class="kt">Context</span></code></pre>

                        </div>
                      </div>
                    </section>
                  </div>
                </li>
                <li class="item">
                  <div>
                    <code>
                    <a name="/s:13RouteComposer14SwitchAssemblyC"></a>
                    <a name="//apple_ref/swift/Class/SwitchAssembly" class="dashAnchor"></a>
                    <a class="token" href="#/s:13RouteComposer14SwitchAssemblyC">SwitchAssembly</a>
                    </code>
                  </div>
                  <div class="height-container">
                    <div class="pointer-container"></div>
                    <section class="section">
                      <div class="pointer"></div>
                      <div class="abstract">
                        <p>Builds a <code><a href="Structs/DestinationStep.html">DestinationStep</a></code> which can contain the conditions to select the steps to be taken by a <code><a href="Protocols/Router.html">Router</a></code>.</p>
<h3 id='usage' class='heading'>Usage</h3>
<pre class="highlight swift"><code>       <span class="k">let</span> <span class="nv">containerStep</span> <span class="o">=</span> <span class="kt">SwitchAssembly</span><span class="o">&lt;</span><span class="kt">UINavigationController</span><span class="p">,</span> <span class="kt">ProductContext</span><span class="o">&gt;</span><span class="p">()</span>
               <span class="o">.</span><span class="n">addCase</span> <span class="p">{</span> <span class="p">(</span><span class="nv">context</span><span class="p">:</span> <span class="kt">ProductContext</span><span class="p">)</span> <span class="k">in</span>
                   <span class="c1">// If this configuration is requested by a Universal Link (productURL != nil), skip this case otherwise.</span>
                   <span class="k">guard</span> <span class="n">context</span><span class="o">.</span><span class="n">productURL</span> <span class="o">!=</span> <span class="kc">nil</span> <span class="k">else</span> <span class="p">{</span>
                       <span class="k">return</span> <span class="kc">nil</span>
                   <span class="p">}</span>

                   <span class="k">return</span> <span class="kt">ChainAssembly</span><span class="o">.</span><span class="nf">from</span><span class="p">(</span><span class="kt">NavigationControllerStep</span><span class="o">&lt;</span><span class="kt">UINavigationController</span><span class="p">,</span> <span class="kt">ProductContext</span><span class="o">&gt;</span><span class="p">())</span>
                           <span class="o">.</span><span class="nf">using</span><span class="p">(</span><span class="kt">GeneralAction</span><span class="o">.</span><span class="nf">presentModally</span><span class="p">())</span>
                           <span class="o">.</span><span class="nf">from</span><span class="p">(</span><span class="kt">GeneralStep</span><span class="o">.</span><span class="nf">current</span><span class="p">())</span>
                           <span class="o">.</span><span class="nf">assemble</span><span class="p">()</span>

               <span class="p">}</span>

               <span class="c1">// If UINavigationController is visible on the screen - use it</span>
               <span class="o">.</span><span class="nf">addCase</span><span class="p">(</span><span class="nv">from</span><span class="p">:</span> <span class="kt">ClassFinder</span><span class="o">&lt;</span><span class="kt">UINavigationController</span><span class="p">,</span> <span class="kt">ProductContext</span><span class="o">&gt;</span><span class="p">(</span><span class="nv">options</span><span class="p">:</span> <span class="o">.</span><span class="n">currentVisibleOnly</span><span class="p">))</span>

               <span class="c1">// Otherwise - create a UINavigationController and present modally</span>
               <span class="o">.</span><span class="nf">assemble</span><span class="p">(</span><span class="k">default</span><span class="p">:</span> <span class="kt">ChainAssembly</span><span class="o">.</span><span class="nf">from</span><span class="p">(</span><span class="kt">NavigationControllerStep</span><span class="o">&lt;</span><span class="kt">UINavigationController</span><span class="p">,</span> <span class="kt">ProductContext</span><span class="o">&gt;</span><span class="p">())</span>
                   <span class="o">.</span><span class="nf">using</span><span class="p">(</span><span class="kt">GeneralAction</span><span class="o">.</span><span class="nf">presentModally</span><span class="p">())</span>
                   <span class="o">.</span><span class="nf">from</span><span class="p">(</span><span class="kt">GeneralStep</span><span class="o">.</span><span class="nf">current</span><span class="p">())</span>
                   <span class="o">.</span><span class="nf">assemble</span><span class="p">())</span>
</code></pre>

                        <a href="Classes/SwitchAssembly.html" class="slightly-smaller">See more</a>
                      </div>
                      <div class="declaration">
                        <h4>Declaration</h4>
                        <div class="language">
                          <p class="aside-title">Swift</p>
                          <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">final</span> <span class="kd">class</span> <span class="kt">SwitchAssembly</span><span class="o">&lt;</span><span class="kt">ViewController</span><span class="p">,</span> <span class="kt">Context</span><span class="o">&gt;</span> <span class="k">where</span> <span class="kt">ViewController</span> <span class="p">:</span> <span class="kt">UIViewController</span></code></pre>

                        </div>
                      </div>
                    </section>
                  </div>
                </li>
                <li class="item">
                  <div>
                    <code>
                    <a name="/s:13RouteComposer13ChainAssemblyO"></a>
                    <a name="//apple_ref/swift/Enum/ChainAssembly" class="dashAnchor"></a>
                    <a class="token" href="#/s:13RouteComposer13ChainAssemblyO">ChainAssembly</a>
                    </code>
                  </div>
                  <div class="height-container">
                    <div class="pointer-container"></div>
                    <section class="section">
                      <div class="pointer"></div>
                      <div class="abstract">
                        <p>Builds a chain of steps.</p>

                        <a href="Enums/ChainAssembly.html" class="slightly-smaller">See more</a>
                      </div>
                      <div class="declaration">
                        <h4>Declaration</h4>
                        <div class="language">
                          <p class="aside-title">Swift</p>
                          <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">enum</span> <span class="kt">ChainAssembly</span></code></pre>

                        </div>
                      </div>
                    </section>
                  </div>
                </li>
                <li class="item">
                  <div>
                    <code>
                    <a name="/s:13RouteComposer23CompleteFactoryAssemblyC"></a>
                    <a name="//apple_ref/swift/Class/CompleteFactoryAssembly" class="dashAnchor"></a>
                    <a class="token" href="#/s:13RouteComposer23CompleteFactoryAssemblyC">CompleteFactoryAssembly</a>
                    </code>
                  </div>
                  <div class="height-container">
                    <div class="pointer-container"></div>
                    <section class="section">
                      <div class="pointer"></div>
                      <div class="abstract">
                        <p>Builds a <code><a href="Protocols/ContainerFactory.html">ContainerFactory</a></code> fulfilled with the children <code>UIViewController</code> factories.</p>
<pre class="highlight swift"><code><span class="k">let</span> <span class="nv">rootFactory</span> <span class="o">=</span> <span class="kt">CompleteFactoryAssembly</span><span class="p">(</span><span class="nv">factory</span><span class="p">:</span> <span class="kt">TabBarFactory</span><span class="p">())</span>
        <span class="o">.</span><span class="nf">with</span><span class="p">(</span><span class="kt">XibFactory</span><span class="o">&lt;</span><span class="kt">HomeViewController</span><span class="p">,</span> <span class="kt">Any</span><span class="p">?</span><span class="o">&gt;</span><span class="p">,</span> <span class="nv">using</span><span class="p">:</span> <span class="kt">UITabBarController</span><span class="o">.</span><span class="nf">add</span><span class="p">())</span>
        <span class="o">.</span><span class="nf">with</span><span class="p">(</span><span class="kt">XibFactory</span><span class="o">&lt;</span><span class="kt">AccountViewController</span><span class="p">,</span> <span class="kt">Any</span><span class="p">?</span><span class="o">&gt;</span><span class="p">,</span> <span class="nv">using</span><span class="p">:</span> <span class="kt">UITabBarController</span><span class="o">.</span><span class="nf">add</span><span class="p">())</span>
        <span class="o">.</span><span class="nf">assemble</span><span class="p">()</span>
</code></pre>

<p><em>NB: Order matters here</em></p>

                        <a href="Classes/CompleteFactoryAssembly.html" class="slightly-smaller">See more</a>
                      </div>
                      <div class="declaration">
                        <h4>Declaration</h4>
                        <div class="language">
                          <p class="aside-title">Swift</p>
                          <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">final</span> <span class="kd">class</span> <span class="kt">CompleteFactoryAssembly</span><span class="o">&lt;</span><span class="kt">FC</span><span class="o">&gt;</span> <span class="k">where</span> <span class="kt">FC</span> <span class="p">:</span> <span class="kt"><a href="Protocols/ContainerFactory.html">ContainerFactory</a></span></code></pre>

                        </div>
                      </div>
                    </section>
                  </div>
                </li>
              </ul>
            </div>
          </div>
        </section>

      </article>
    </div>
    <section class="footer">
      <p>&copy; 2022 <a class="link" href="https://github.com/ekazaev" target="_blank" rel="external noopener">Evgeny Kazaev</a>. All rights reserved. (Last updated: 2022-10-21)</p>
      <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external noopener">jazzy ♪♫ v0.14.3</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external noopener">Realm</a> project.</p>
    </section>
  </body>
</html>
